package fun.xming.memlib.tools;
import android.content.Context;
/* 前人栽树，后人乘凉。 */
/**
 * @author huazai
 * @since 2022/9/16 13:50
 * @desciption 单位转换（注意：由于每次计算结果都强转为int类型，小数部分直接抹除，1.9和1.1一样，所以加上0.5f四舍五入一下，尽量提高精度）
 **/
public class UnitConversion {

    /**
     * dp转换为px
     * @param context   上下文环境
     * @param dipValue  需要转换的值
     * @return int
     * @createtime 2022/9/16 13:51
     **/
    public static int dipToPx(Context context, int dipValue){
        final float density = context.getResources().getDisplayMetrics().density;
        return (int) (dipValue * density + 0.5f);
    }

    /**
     * px转换为dip
     * @param context 上下文环境
     * @param pxValue 需要转换的值
     * @return int
     * @createtime 2022/9/16 13:56
     **/
    public static int pxToDip(Context context, int pxValue){
        final float density = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / density + 0.5f);
    }

    /**
     * px转换为sp
     * @param context  上下文环境
     * @param pxValue  需要转换的值
     * @return int
     * @createtime 2022/9/16 14:04
     **/
    public static int pxToSp(Context context, int pxValue){
        final float density = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / density + 0.5f);
    }

    /**
     * sp转换为px
     * @param context  上下文环境
     * @param spValue  需要转换的值
     * @return int
     * @createtime 2022/9/16 14:05
     **/
    public static int spToPx(Context context, int spValue){
        final float density = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * density + 0.5f);
    }
}

